iT邦幫忙

2024 iThome 鐵人賽

DAY 9
0
Odoo

前後端整合學習,不只是後端管理系列 第 9

【Day9】odoo 撰寫第一個api

  • 分享至 

  • xImage
  •  

在上篇文章中,我們探討了如何在 Odoo 中撰寫第一個 RESTful API,並介紹了 RESTful API 的基本概念和設計原則。現在,我們將繼續這個話題,通過實際操作來測試我們的 API。

在這篇文章中,我們將使用 Postman 這個強大的工具來測試 API。同時,我們也會簡要介紹其他幾種常見的 API 測試工具,幫助你選擇最適合的工具。然而,最終我們將以 Postman 為例進行詳細的測試操作。

常見的 API 測試工具

在開發和測試 API 的過程中,有多種工具可以幫助開發者模擬請求、分析響應以及進行性能測試。以下是幾種常見的 API 測試工具:

  1. Postman
    Postman 是最受歡迎的 API 測試工具之一,提供了豐富的功能和簡單易用的界面。它支持 HTTP 請求的完整生命周期管理,從發送簡單的 GET 請求到設置自動化測試流程,Postman 都能勝任。它還支持請求和回應的參數化、環境變量、測試腳本等高級功能,這使得它成為 API 測試的首選工具。
  2. cURL
    cURL 是一個命令行工具,用於從命令行或腳本中發送 HTTP 請求。它非常輕量且靈活,適合於快速測試和調試 API。雖然它的學習曲線較陡,但它在自動化腳本和簡單測試場景中非常強大。
  3. Insomnia
    Insomnia 是另一款流行的 API 測試工具,以其簡潔的界面和強大的功能受到開發者的青睞。它支持 GraphQL 和 REST API 測試,並提供了請求分組、環境變量管理以及插件擴展等功能,是 Postman 的一個不錯替代品。
  4. Swagger UI
    Swagger UI 是一個開源工具,用於可視化和互動地探索 API。它通常與 Swagger(OpenAPI 規範)一起使用,允許開發者直接在瀏覽器中測試 API,並且可以生成自動化的 API 文檔。這對於需要與其他團隊分享 API 規範的情況非常有用。
  5. JMeter
    JMeter 是一個專注於性能測試的開源工具,雖然它最初是為 Web 應用程式設計的,但現在也支持 API 測試。JMeter 提供了豐富的功能來模擬高並發場景,對於需要測試 API 在壓力下的表現的開發者來說,JMeter 是一個很好的選擇。

雖然這些工具各有特色,但在日常開發和測試中,Postman 以其直觀的操作和豐富的功能,成為了最受歡迎的選擇。接下來,我們將使用 Postman 來測試我們在 Odoo 中撰寫的 API。

準備工作:設定 Odoo 控制器

首先,我們需要在 Odoo 中設定一個簡單的控制器來模擬 API 的行為。為了避免與資料庫進行交互,我們將在控制器中使用簡單的假資料來模擬資料庫的回應。

假設我們已經建立了一個名為 my_api_module 的 Odoo 模組,並且這個模組中包含一個控制器 main.py。我們可以在這個控制器中定義 API,並使用靜態的假資料來回應請求。

from odoo import http

class MyAPIController(http.Controller):

    # 假資料
    PRODUCTS = [
        {'id': 1, 'name': 'Product A', 'price': 10.0},
        {'id': 2, 'name': 'Product B', 'price': 15.5},
        {'id': 3, 'name': 'Product C', 'price': 7.8},
    ]

    @http.route('/api/products', type='json', auth='public', methods=['GET'], csrf=False)
    def get_products(self):
        # 返回假資料
        return {'status': 'success', 'data': self.PRODUCTS}

    @http.route('/api/products', type='json', auth='public', methods=['POST'], csrf=False)
    def create_product(self, **kwargs):
        # 模擬創建新產品
        new_id = len(self.PRODUCTS) + 1
        new_product = {
            'id': new_id,
            'name': kwargs.get('name'),
            'price': kwargs.get('price'),
        }
        self.PRODUCTS.append(new_product)
        return {'status': 'success', 'data': new_product}

在這段代碼中,我們創建了兩個 API 路由:

  • GET /api/products:返回一個靜態的產品列表。
  • POST /api/products:模擬創建一個新產品並將其添加到靜態列表中。

使用 Postman 測試 API

現在,我們可以使用 Postman 來測試這些 API。

  1. 打開 Postman 並創建新請求

    打開 Postman,點擊 "New" 按鈕,選擇 "Request" 創建一個新請求。為該請求命名,如 "Get Products"。

  2. 設置 GET 請求

    • 方法:選擇 GET
    • URL:輸入 http://localhost:8069/api/products(假設 Odoo 正在本地端口 8069 上運行)。
    • 點擊 "Send" 發送請求。

    你應該會看到一個包含產品列表的 JSON 響應,這證明 API 能夠正確返回靜態假資料。

  3. 設置 POST 請求

    • 方法:選擇 POST

    • URL:輸入 http://localhost:8069/api/products

    • Body:選擇 raw 並將格式設為 JSON,然後輸入以下 JSON 數據來模擬創建新產品:

      json複製程式碼
      {
          "name": "Product D",
          "price": 20.0
      }
      
    • 點擊 "Send" 發送請求。

    你應該會看到一個包含新創建產品的 JSON 響應,並且該產品已被添加到靜態列表中。

總結

在這篇文章中,我們探討了幾種常見的 API 測試工具,並最終選擇使用 Postman 來測試我們在 Odoo 中撰寫的 API。通過使用 Postman,我們可以輕鬆地發送 GET 和 POST 請求,並檢查 API 的回應,這對於開發和調試 API 十分有用。

即使是在不連接真實資料庫的情況下,我們也能使用靜態假資料來模擬 API 的行為,這樣可以快速迭代和測試 API 的邏輯。一旦 API 的邏輯得到驗證,我們可以將其連接到真正的資料庫中,以便在生產環境中使用。

通過這些步驟,你應該能夠更好地理解如何在 Odoo 中撰寫和測試 API,並有效利用 Postman 進行開發過程中的調試工作。

參考

Github


上一篇
【Day8】odoo 撰寫第一個api - 理解RESTful
下一篇
【Day10】 撰寫自己的模板
系列文
前後端整合學習,不只是後端管理19
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言